1. Field of the Invention
The invention relates to intelligent I/O device management and in particular relates to improvements to techniques and structure for managing the upgrade of an I/O subsystem controller firmware.
2. Discussion of Related Art
I/O subsystems connected to host computing systems have rapidly evolved to include significant local intelligence within the I/O subsystem. Such intelligent I/O subsystems include significant local processing power and associated memory for storing program instructions to operate the I/O subsystem. These memories within an I/O subsystem contain, among other things, firmware, a collection of program instructions and variables used to operate the I/O subsystem.
In particular, for example, storage subsystems possess significant processing and associated program memory capabilities for performing high-level storage management techniques within the storage subsystem. A RAID storage subsystem includes various levels of RAID storage management techniques within the storage controllers of the storage subsystem. The firmware for operating such RAID storage management features in the storage controllers can be quite extensive.
It is a common problem with such intelligent I/O subsystems to upgrade the firmware within the subsystems as new, improved I/O firmware becomes available. It is generally known to provide a management console application operable on an attached host system to provide an administrative user a convenient user interface for performing management functions within the I/O subsystem such as the firmware upgrade of the I/O subsystem. For example, storage subsystems often include a management application program operable on an attached host system to permit an administrative user to manage the storage subsystem. For example the management application program may include convenient user interface features to permit an administrative user to configure a plurality of storage devices within the storage subsystem. Such a management application program may also include features to permit the downloading of updated firmware to the storage subsystem.
A problem remains in such a firmware upgrade process initiated by a management application program operable on an attached host computer. In particular, it may be problematic for the management application program to continue communications with the I/O subsystem following an upgrade of the firmware within the I/O subsystem. The upgraded I/O subsystem firmware may be incompatible with the management application program such that the administrative user may be forced to exit the management application program and restart a newer version of that program.
It is evident from the above that need exists for improved communications between a management application program and an intelligent I/O subsystem for purposes of upgrading firmware within the I/O subsystem.
The present invention solves the above and other problems, thereby advancing the state of the useful arts, by providing methods and associated structure for on-the-fly version compatibility transition between a management application program and its associated intelligent I/O subsystem. More specifically, the present invention defines a management application program that utilizes a script language interpreted by a script engine for communicating with an associated intelligent I/O subsystem. The script language includes a rich variety of commands for interaction with the attached intelligent I/O subsystem. Among the commands is a firmware upgrade command that performs associated processing to upgrade the firmware revision operable within the attached intelligent I/O subsystem. In addition to upgrading the I/O subsystem, the script engine in response to performing such an upgrade command informs the management application program that a firmware version upgrade has just taken place. In response to such a notification, the management application program instantiates an upgraded version of the script engine to maintain compatibility with the newly upgraded firmware now operable within the intelligent I/O subsystem.
Still more specifically, a script engine is instantiated by the management application process to be compatible with the presently operating version of firmware in the intelligent I/O subsystem. The management application process determines the present version operable within the I/O subsystem by querying the intelligent I/O subsystem as to its present revision level. A corresponding revision of the script engine is instantiated by the management application program when it initializes.
The presently instantiated script engine reads script commands supplied to it by the management application program and communicates with the intelligent I/O subsystem as required to perform the script commands. When a firmware upgrade command is executed, the script engine communicates with the I/O subsystem to provide it with the specified upgraded version of the firmware. In addition, the presently instantiated script engine notifies the management application program that a new version of firmware has been successfully downloaded to the intelligent I/O subsystem. Upon receipt of such notification, the management application program terminates the presently instantiated script engine and instantiates a new script engine having a version compatible with the present version of firmware recently downloaded to the intelligent I/O subsystem. The new script engine is provided with state information saved by the original (predecessor) script engine allowing it to continue processing the original sequence of script commands in a seamless manner.